Computer systems typically include a number of common components, including processors, memory, and hard disk storage. A computer bus couples the various components, often using specific interfaces between the bus and the various computer devices attached to the device. For example, memory and video adapters are often on their own special high-speed buses designed for the particular demands of the attached devices, and hard disk drives are often attached via a storage adapter such as a SATA (serial ATA) or SCSI (small computer system interface) interface coupled between the main computer bus and the storage devices. The interface adapter is designed to communicate with and control a specific type of attached device, such as a SATA hard disk drive or CD-ROM drive, or a SCSI hard disk drive or SCSI tape drive.
In more sophisticated computer systems, hard disk storage interfaces such as SATA are replaced with multiple channels of SCSI adapters, or more sophisticated interfaces such as Fibre Channel or InfiniBand. These interfaces are both high-speed interfaces designed to enable attachment of a number of high-speed peripheral devices such as hard disk drives to a single interface channel, and to enable sophisticated configurations of storage devices such as redundant arrays of independent disk drives (RAID) and storage area networks. Some interface technologies also enable connection of devices other than storage devices, including InfiniBand's support for network interfaces and processor clusters external to a particular server.
But, with a variety of formats available, connection between peripheral devices supporting different standards can be an important factor in achieving the desired configuration or performance of a system. One common solution to such problems is to simply configure a computer system having both types of adapters, so that it can access both types of devices. This involves expense of adding hardware and increases the complexity of the system, and may consume resources such as computer bus slots or processor time that are in high demand. Another solution is to build a special-purpose computer system having interfaces for both systems, designed to act only as a “bridge” between the two interfaces. Such systems typically receive information in one interface format in an interface adapter and decode the data, at which point it can be transferred in the bridge to an interface adapter supporting another interface format for encoding and transmission.
But, such bridge systems are often significantly slower at translating and passing on data than the native speed of either of the interface formats involved, and so are typically a bottleneck in such a bridge system. Further, certain operations such as booting a computer from a specific boot volume across the bridge containing an operating system are often not supported. The performance of a bridge system is therefore a concern to those incorporating a bridge into a computer system.